const { readFile, writeFile, readdir, stat } = require('fs')

/**
 * 描述:  读取文件内容
 * 参数:  readFile('文件路径','编码格式',callback)
 * 注意:  如果没有传编码参数, Node.js 将假定为 Buffer 对象(是一个类数组对象, 包含表示文件中字节的数字)
 */
function read(path, format = "utf-8") {
    readFile(path, format, (err, data) => {
        if (err) throw err
        console.log(data);
    })
}

/**
 * 描述:  写入文件内容
 * 参数:  writeFile('文件路径','写入的内容',callback)
 */
function write(path, content) {
    writeFile(path, content, err => {
        if (err) throw err
        else console.log('写入');
    })
}

/**
 * 描述:  获取文件路径
 * 参数:  readdir('文件路径','编码格式',callback)
 * 注意:  如果没有传编码参数, Node.js 将假定为 Buffer 对象(是一个类数组对象, 包含表示文件中字节的数字)
 */
function getPath(path, format = "utf-8") {
    readdir(path, format, (err, pathArr) => {
        if (err) throw err
        console.log(`${path}/ => [${pathArr}]`);
        for (let i = 0; i < pathArr.length; i++) {
            let childPath = `${path}/${pathArr[i]}`
            getStat(childPath)
        }
    })
}

/**
 * 描述:  检测当前是文件还是文件夹
 * 参数:  stat('文件路径',callback)
 * 方法:  isDirectory() 判断是文件夹还是文件,返回 true / false
 */
function getStat(files) {
    stat(files, (err, stats) => {
        if (err) throw err
        else if (stats.isDirectory()) {
            getPath(files)
        } else {
            console.log(files + ' => 是文件');
        }
    })
}

getPath('.')

